package fr.umlv.android.boggle.model;

import fr.umlv.android.boggle.listener.GameListener;
import fr.umlv.android.boggle.listener.LetterListener;
import fr.umlv.android.boggle.listener.WordFoundListener;

/**
 * interface model for boggle
 * @author Olivier
 *
 */
public interface BoggleModel {
	/**
	 * Init grid of game
	 */
	void mixGrid();
	int countRow();
	int countCol();
	int getScore();
	Letter getLetter(int row, int col);
	void selectLetter(int row, int col);
	void selectLetter(Letter letter);

	/**
	 * return number of word found
	 * @return number of word found
	 */
	int countWordsFound();
	
	/**
	 * return the word found at the index specified
	 * @param index
	 * @return the word found at the index specified
	 */
	String getWordFound(int index);
	
	void addLetterListener(LetterListener letterListener);
	void removeLetterListener(LetterListener letterListener);
	void addWordFoundListener(WordFoundListener wordFoundListeners);
	void removeWordFoundListener(WordFoundListener wordFoundListener);
	void addGameListener(GameListener gameListener);
	void removeGameListener(GameListener gameListener);
	boolean isRunning();
}
